Sends a C-GET-REQ message to a peer member of a connection defined by Scp.
public void Get(
DicomScp scp,
DicomDataSet request,
List<PresentationContext> additionalPresentationContexts
)
Public Sub [Get](
ByVal scp As DicomScp,
ByVal request As DicomDataSet,
ByVal additionalPresentationContexts As List(Of PresentationContext
))
public:
void Get(
DicomScp^ scp,
DicomDataSet^ request,
List<PresentationContext^>^ additionalPresentationContexts
)
scp
The peer connection to send the C-GET-REQ to.
request
The DicomDataSet data sets which describes the C-GET-REQ information to retrieve.
additionalPresentationContexts
A list of presentation contexts to add to the Leadtools.Dicom.DicomAssociate.
The parameter request should contain the QueryRetrieveLevel (0008,0052), which should be one of "STUDY", "SERIES", or "IMAGE".
If QueryRetrieveLevel is:
This example does an image-level C-GET to retrieve an instance from a DICOM Server that supports C-GET specifically.
It retrieves one of the SMITH^TERRY instances that are in the LXX_SERVER32 database of the CSLeadtools.Dicom.Server.exe. Replace XX with the version of the toolkit (i.e. for version 21, this would be L21_SERVER32).
This overload takes a DicomDataSet that contains QueryRetrieveLevel, as well as the UIDs associated with the level.
Note that for this overload of Get, you must specifically add the SOP Class UID of the instance that you are retrieving to the Association.
using Leadtools;
using Leadtools.Dicom.Scu;
using Leadtools.Dicom.Scu.Common;
using Leadtools.Dicom;
using Leadtools.Dicom.Common.DataTypes;
using Leadtools.Dicom.Common.DataTypes.Status;
public void QueryRetrieveScu_Get1()
{
DicomEngine.Startup();
DicomNet.Startup();
//
// Change these parameters to reflect the calling AETitle.
//
QueryRetrieveScu getScu = new QueryRetrieveScu();
getScu.AETitle = "LEAD_CLIENT";
getScu.HostPort = 1000;
getScu.HostAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork);
//
// Change these parameters to reflect the called AETitle (server).
//
DicomScp scp = new DicomScp();
scp.AETitle = "LEAD_GET_SCP";
scp.Port = 404;
scp.Timeout = 60;
scp.PeerAddress = IPAddress.Parse("192.168.0.168");
getScu.BeforeCGet += new BeforeCGetDelegate(getStudy_BeforeCGet);
getScu.AfterCGet += new AfterCGetDelegate(getStudy_AfterCGet);
getScu.ReceivedStoreRequest += new ReceivedStoreRequestDelegate(getStudy_ReceivedStoreRequest);
// The C-GET must know the Media Storage SOP Class UID of the DICOM Datasets that you want to retrieve
// In this example, the five SMITH^TERRY instances are retrieved
// SOP Class UID of the instances is:
// MR Image Storage
// 1.2.840.10008.5.1.4.1.1.4
// StudyInstanceUid of the study is:
// 1.3.12.2.1107.5.2.31.30563.30000008120313112035900000034
// SeriesInstanceUid of the series is:
// 1.3.12.2.1107.5.2.31.30563.2008120317404292381631917.0.0.0
// SOPInstanceUid of one of the five instances is:
// 1.3.12.2.1107.5.2.31.30563.2008120317404382714631941
string studyInstanceUid = "1.3.12.2.1107.5.2.31.30563.30000008120313112035900000034";
string seriesInstanceUid = "1.3.12.2.1107.5.2.31.30563.2008120317404292381631917.0.0.0";
string sopInstanceUid = "1.3.12.2.1107.5.2.31.30563.2008120317404382714631941";
PresentationContext pc = new PresentationContext(DicomUidType.MRImageStorage);
pc.TransferSyntaxes.Add(DicomUidType.ImplicitVRLittleEndian);
// Alternatively, you can create the presentation context if you have a compatible DicomDataSet
// This is illustrated, but 'pc' will be used
PresentationContext pcAnotherWay;
string compatibleDicomName = @"D:\erase\dicom\compatible.dcm";
if (File.Exists(compatibleDicomName))
{
DicomDataSet dsCompatible = new DicomDataSet();
dsCompatible.Load(compatibleDicomName, DicomDataSetLoadFlags.None);
pcAnotherWay = QueryRetrieveScu.GetCompatiblePresentationContext(dsCompatible);
}
List<PresentationContext> pcList = new List<PresentationContext>();
pcList.Add(pc);
// There are four overloads for Get
// This examples illustrates how to use three of the overloads (study leve, series level, instance level)
// Uncomment whichever overload you want to use
// StudyLevel -- retrieves five instances
// getStudy.Get(scp, studyInstanceUid, pcList);
// SeriesLevel -- retrieves three instances
// getStudy.Get(scp, studyInstanceUid, seriesInstanceUid, pcList);
// InstanceLevel -- retrieves one instance
getScu.Get(scp, studyInstanceUid, seriesInstanceUid, sopInstanceUid, pcList);
DicomNet.Shutdown();
DicomEngine.Shutdown();
}
void getStudy_BeforeCGet(object sender, BeforeCGetEventArgs e)
{
Console.WriteLine("Before CGet");
}
void getStudy_ReceivedStoreRequest(object sender, ReceivedStoreRequestEventArgs e)
{
Console.WriteLine("==========================================");
Console.WriteLine("Patient Name:\t{0}", e.Patient.Name.Full);
Console.WriteLine("SOPInstanceUID:\t{0}", e.Instance.SOPInstanceUID);
}
void getStudy_AfterCGet(object sender, AfterCGetEventArgs e)
{
Console.WriteLine("After CGet");
Console.WriteLine("\t{0} Completed", e.Completed);
Console.WriteLine("\t{0} Failed", e.Failed);
Console.WriteLine("\t{0} Warning", e.Warning);
Console.WriteLine("\tStatus: {0}", e.Status);
if (e.Status != DicomCommandStatusType.Success)
{
string statusAllString = e.StatusAll.ToString(StatusFormatFlags.IgnoreStatus, "\n", "\t");
Console.WriteLine(statusAllString);
}
}
Imports Leadtools
Imports Leadtools.Dicom.Scu
Imports Leadtools.Dicom.Scu.Common
Imports Leadtools.Dicom
Imports Leadtools.Dicom.Common.DataTypes
Public Sub QueryRetrieveScu_Get1()
DicomEngine.Startup()
DicomNet.Startup()
'
' Change these parameters to reflect the calling AETitle.
'
Dim getScu As New QueryRetrieveScu()
getScu.AETitle = "LEAD_CLIENT"
getScu.HostPort = 1000
getScu.HostAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(Function(ip) ip.AddressFamily = AddressFamily.InterNetwork)
'
' Change these parameters to reflect the called AETitle (server).
'
Dim scp As New DicomScp()
scp.AETitle = "LEAD_GET_SCP"
scp.Port = 404
scp.Timeout = 60
scp.PeerAddress = IPAddress.Parse("192.168.0.168")
AddHandler getScu.BeforeCGet, AddressOf getStudy_BeforeCGet
AddHandler getScu.AfterCGet, AddressOf getStudy_AfterCGet
AddHandler getScu.ReceivedStoreRequest, AddressOf getStudy_ReceivedStoreRequest
' The C-GET must know the Media Storage SOP Class UID of the DICOM Datasets that you want to retrieve
' In this example, the five SMITH^TERRY instances are retrieved
' SOP Class UID of the instances is:
' MR Image Storage
' 1.2.840.10008.5.1.4.1.1.4
' StudyInstanceUid of the study is:
' 1.3.12.2.1107.5.2.31.30563.30000008120313112035900000034
' SeriesInstanceUid of the series is:
' 1.3.12.2.1107.5.2.31.30563.2008120317404292381631917.0.0.0
' SOPInstanceUid of one of the five instances is:
' 1.3.12.2.1107.5.2.31.30563.2008120317404382714631941
Dim studyInstanceUid As String = "1.3.12.2.1107.5.2.31.30563.30000008120313112035900000034"
Dim seriesInstanceUid As String = "1.3.12.2.1107.5.2.31.30563.2008120317404292381631917.0.0.0"
Dim sopInstanceUid As String = "1.3.12.2.1107.5.2.31.30563.2008120317404382714631941"
Dim pc As New PresentationContext(DicomUidType.MRImageStorage)
pc.TransferSyntaxes.Add(DicomUidType.ImplicitVRLittleEndian)
' Alternatively, you can create the presentation context if you have a compatible DicomDataSet
' This is illustrated, but 'pc' will be used
Dim pcAnotherWay As PresentationContext
Dim compatibleDicomName As String = "D:\erase\dicom\compatible.dcm"
If File.Exists(compatibleDicomName) Then
Dim dsCompatible As New DicomDataSet()
dsCompatible.Load(compatibleDicomName, DicomDataSetLoadFlags.None)
pcAnotherWay = QueryRetrieveScu.GetCompatiblePresentationContext(dsCompatible)
End If
Dim pcList As New List(Of PresentationContext)()
pcList.Add(pc)
' There are four overloads for Get
' This examples illustrates how to use three of the overloads (study leve, series level, instance level)
' Uncomment whichever overload you want to use
' StudyLevel -- retrieves five instances
' getStudy.Get(scp, studyInstanceUid, pcList);
' SeriesLevel -- retrieves three instances
' getStudy.Get(scp, studyInstanceUid, seriesInstanceUid, pcList);
' InstanceLevel -- retrieves one instance
getScu.Get(scp, studyInstanceUid, seriesInstanceUid, sopInstanceUid, pcList)
DicomNet.Shutdown()
DicomEngine.Shutdown()
End Sub
Private Sub getStudy_BeforeCGet(ByVal sender As Object, ByVal e As BeforeCGetEventArgs)
Console.WriteLine("Before CGet")
End Sub
Private Sub getStudy_ReceivedStoreRequest(ByVal sender As Object, ByVal e As ReceivedStoreRequestEventArgs)
Console.WriteLine("==========================================")
Console.WriteLine("Patient Name:" & Constants.vbTab & "{0}", e.Patient.Name.Full)
Console.WriteLine("SOPInstanceUID:" & Constants.vbTab & "{0}", e.Instance.SOPInstanceUID)
End Sub
Private Sub getStudy_AfterCGet(ByVal sender As Object, ByVal e As AfterCGetEventArgs)
Console.WriteLine("After CGet")
Console.WriteLine(Constants.vbTab & "{0} Completed", e.Completed)
Console.WriteLine(Constants.vbTab & "{0} Failed", e.Failed)
Console.WriteLine(Constants.vbTab & "{0} Warning", e.Warning)
Console.WriteLine(Constants.vbTab & "Status: {0}", e.Status)
End Sub
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document